使用JSON.parse字符串转换json报错解决办法 |
您所在的位置:网站首页 › jQuery 数组转json赋值input › 使用JSON.parse字符串转换json报错解决办法 |
字符串格式不是很完美,导致JSON.parse转换失败。JSON.parse()方法对字符串的格式要求极其严格。一点格式错误都不能有,否则就报异常。 解决方案要么改掉你的json字符串,要么使用$parseJSON或者eval的方式生成json对象。 问题产生的背景 获取post的值在获取小程序的二维码返回参数的时候。 为了保证数据的安全性,走了POST的请求方式。 POST的数据提交返回后,经过了decodeURIComponent转换之后。变成了类似JSON串的方式呈现。 例如id:101,pid:102 这种格式一看到就想往json转。 毕竟json还是很方便的。 用json的话,很方便就考虑到嵌入的JSON。 JSONJSON就两个常用方法 JSON.stringify() JSON.parse() 一个是json对象转字符串,一个是字符串转json对象。 就是这两个简单的方法,中间用的时候出现了一些问题。 曾经的自以为是 无效的代码先上下代码 let sence = 'id:1,name:张三' let obj = JSON.parse("{"+sence +"}") this.id = obj.id 结果很打脸理想很丰满,现实很骨感。 直接报错了。 针对报错的最常规手法就是debugger、console.log()了。 发现使用JSON.stringify()输出数据很正常。 一转换json对象就可以报异常了。 人民的大救星 百度,百度,找到一条出路这就很纠结了,百度吧,百度吧,百度吧 网上说是因为格式不严谨,所以就报异常了。 JOSN.parse对格式要求非常严格。 那怎么办呢? 对于这种后台传递过来的没有引号的 大部分都推荐使用eval()或者$.parseJSON方法转换为json对象。 let sence = 'id:1,name:张三' let obj = ( Function( "return " + sence ) )() console.log(JSON.stringify(obj)) this.id = obj.id结果完美转换。引号都给加上了。 孰是孰非 一家之言$.parseJSON、JSON.parse和eval还是有些区别的。 类型$parseJSONJSON.parseeval方法说明jquery的方法。将符合标准格式的的JSON字符串转为与之对应的JavaScript对象只能解析属性名是双引号包裹的字符串对象可将一个JavaScript代码字符串求值成特定的对象主要区别字符串必须用双引号括起来。必须严格遵守json字符串格式;属性名称必须用双引号包裹; 字符串必须用双引号括起来。字符串必须用双引号括起来。使用场景能用JSON.parse的都可以用这个json字符串必须严格符合json格式。可以用在后端传递给前端数据格式的使用使用。对数据的严谨性可以格式不规范的时候,当你不能确认对方的数据格式是不是很严谨的时候推荐程度推荐一般不推荐 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |